package org.web.accesscontrollist.sdk.biz;

import org.web.accesscontrollist.sdk.dto.AclResourceUserBindingDTO;
import org.web.accesscontrollist.sdk.dto.AclResourceUserBindingBatchDTO;
import org.web.accesscontrollist.sdk.dto.query.QueryAclResourceUserBindingRequest;
import org.web.base.domain.ResultDO;

import java.util.List;

public interface AclResourceUserBindingBiz {

    /**
     * 批量进行绑【 用户、资源、角色】关系。这里的角色，指的是role_name，并未对角色单独定义规格。如果接入方，想对角色定义规格，可以使用acl_resource_type、acl_resource_detail构建角色模型，角色的名称就是【acl_resource_detail】表中的detail_name来进行指定。
     * 数据规则
     * （1）数据保护，校验business_line和access_key的合法性。
     * （2）唯一性：business_line、type_name、detail_name、user_num、role_name 五个属性组合逻辑唯一。
     * （3）冗余【acl_resource_type】的信息有：business_line、type_name、detail_name、resource_level、first_level、second_level、third_level、fourth_level、fifth_level。acl_user_resource_binding 会判断business_line、type_name、detail_name在【acl_resource_detail】是否存在。冗余设计的目的是在查询时，减少一次数据查询。
     * （4）first_level、second_level、third_level、fourth_level、fifth_level并不需要指定，是由business_line、type_name、detail_name唯一确认【acl_resource_detail】的信息，由其设置【绑定表】resource_level、first_level、second_level、third_level、fourth_level、fifth_level相关属性信息。即使指定信息，也不会依据first_level、second_level、third_level、fourth_level、fifth_level进行设置。
     */
    ResultDO<List<AclResourceUserBindingDTO>> saveAclResourceUserBindingBatch(AclResourceUserBindingBatchDTO aclResourceUserBindingBatchDTO);


    ResultDO<List<AclResourceUserBindingDTO>> selectAclResourceUserBindingList(QueryAclResourceUserBindingRequest queryAclResourceUserBindingRequest);

}
